namespace Digitalmes.Application.Services;

/// <summary>
/// 系统配置查询服务。
/// </summary>
public interface ISysConfigQueryService : IApplicationService
{
    /// <summary>
    /// 通过配置编码获取指定且已启用的配置值，没有找或未启用到则返回 null。
    /// </summary>
    /// <param name="code">配置编码</param>
    /// <returns></returns>
    Task<string?> GetValueAsync(string code);
}

internal static class ISysConfigQueryServiceExtensions
{
    /// <summary>
    /// 通过配置编码获取指定且已启用的配置值是否为 YES。
    /// </summary>
    /// <param name="sysConfigQuery"></param>
    /// <param name="code">配置编码</param>
    /// <param name="yes">配置编码</param>
    /// <returns>未找到或值不为 "Y" 都会返回 False。</returns>
    public static async Task<bool> IsYes(this ISysConfigQueryService sysConfigQuery, string code, string yes = "Y")
    {
        var v = await sysConfigQuery.GetValueAsync(code);
        return v == yes;
    }
}
